const fs = require('fs').promises;
const path = require('path');

async function main() {
    try {
        // 获取 docs/front 目录下的所有 md 文件  
        const mdFiles = await fs.readdir(path.join(__dirname, 'docs/front'), { withFileTypes: true });
        const mdFilesNames = mdFiles.filter(file => file.isFile() && file.name.endsWith('.md')).map(file => file.name);
        const fileNames = mdFilesNames.map(file => path.parse(file).name);

        // 获取 docs/front 目录下的所有 md 文件  
        const mdFiles2 = await fs.readdir(path.join(__dirname, 'docs/back'), { withFileTypes: true });
        const mdFilesNames2 = mdFiles2.filter(file => file.isFile() && file.name.endsWith('.md')).map(file => file.name);
        const fileNames2 = mdFilesNames2.map(file => path.parse(file).name);

        // 获取 docs/utils 目录下的所有 md 文件  
        const mdFiles3 = await fs.readdir(path.join(__dirname, 'docs/utils'), { withFileTypes: true });
        const mdFilesNames3 = mdFiles3.filter(file => file.isFile() && file.name.endsWith('.md')).map(file => file.name);
        const fileNames3 = mdFilesNames3.map(file => path.parse(file).name);

        // 构建 sidebar 配置  
        const sidebarConfig1 = {
            text: '前端',
            items: fileNames.map(fileName => ({
                text: fileName,
                link: `/front/${fileName}`
            }))
        };
        const sidebarConfig2 = {
            text: '后端',
            items: fileNames2.map(fileName => ({
                text: fileName,
                link: `/back/${fileName}`
            }))
        };
        const sidebarConfig3 = {
            text: '杂谈',
            items: fileNames3.map(fileName => ({
                text: fileName,
                link: `/utils/${fileName}`
            }))
        };

        // 读取 docs/.vitepress/config.js 文件内容  
        const configContent = await fs.readFile(path.join(__dirname, 'docs/.vitepress/config.js'), 'utf-8');

        // 将生成的 sidebar 配置插入到 config.js 文件中  
        const updatedConfig = configContent.replace(/sidebar:\s*\[\s*([\s\S]*?)\]/gs, `sidebar: [${JSON.stringify(sidebarConfig1, null, 2)},${JSON.stringify(sidebarConfig2, null, 2)},${JSON.stringify(sidebarConfig3, null, 2)}]`);
        console.log(updatedConfig)
        // 将更新后的内容写回 config.js 文件  
        await fs.writeFile(path.join(__dirname, 'docs/.vitepress/config.js'), updatedConfig);
    } catch (error) {
        console.error('An error occurred:', error);
    }
}

main();